#ifndef LIGHT_H
#define LIGHT_H

#include "Vector.h"

class Light
{
public:
    // Constroi uma luz dada a posição, a intensidade difusa e a intensidade especular.
    Light(const Point3f& pos, const Vector3f& diffuse, const Vector3f& specular);

    ~Light();

    // Retorna a posição da luz
    Point3f getPosition();

    // Retorna a intensidade difusa
    Vector3f getDiffuse();

    // Retorna a intensidade especular
    Vector3f getSpecular();

    void setPosition(const Point3f& pos);

    void setDiffuse(const Vector3f& diff);

    void setSpecular(const Vector3f& spec);

    // Aplica a lux no openGL
    void applyGL();

    std::string getName();

    void setName(const std::string &name);
   
public:
    Vector3f diffuse;
    Vector3f specular;
    Point3f position;
    int ID;
    std::string m_name;
};

#endif // LIGHT_H
